package com.mask.im.business.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.mask.im.business.model.entity.chat.Friendships;
import com.mask.im.business.model.dto.*;
import com.mask.im.business.model.entity.chat.IMFriendChatMessageDO;
import com.mask.im.business.model.vo.FriendDetailVO;
import com.mask.im.business.common.model.PageResult;
import com.mask.im.business.common.model.RestResponse;

import java.util.List;


/**
 * @author jian
 */
public interface FriendshipsService extends IService<Friendships> {

	RestResponse<List<FriendGroupsSortDTO>> getFriendships(String type, String remark, String username);

	RestResponse<List<FriendGroupsSortDTO>> getFriendships1(String type, String remark, String username);


	List<String> byUserId(String userId);

	FriendChatMessageDTO getChatMessageDTO(IMFriendChatMessageDO imFriendChatMessage);

	RestResponse<List<FriendshipsDTO>> remoteFriendships(String keyword);

	RestResponse<Integer> applyFriendCount();

	RestResponse<List<FriendshipsDTO>> allFriendRequest();

	RestResponse<?> searchUser(String keyword);

	void deleteFriend(Long friendId);

	FriendshipsDTO getFriendshipsDTO(Long myUserInfoId, Long otherUserInfoId);

	RestResponse<?> getUserById(Long id);

	RestResponse<String> addBlacklist(Long friendId);

	RestResponse<FriendDetailDTO> getFriendById(Long friendId);

	RestResponse<FriendDetailDTO> updateFriendDetail(FriendDetailVO friendDetailVO);

	RestResponse<String> updateStar(Long twoUserId, Integer isStar);

	RestResponse<Integer> getInsertLocation();

	PageResult<FriendsBlacklistDTO> getBlacklistFriend(String remark);

	void cancelBlacklistFriend(String friendIds);

	void addUnreadCount(Long friendId);

	void clearUnreadCount(Long friendId);

	RestResponse<SidewaysStatusDTO> getSidewaysStatus(Long friendId);

	void isTop(Long friendId, Integer status);

	void rejectAddFriend(Long friendId);

	void notifyFriendOnline(NotifyFriend notifyFriend);

	RestResponse<List<GroupChatShowDTO>> buildGroupChatShow(String keyword);

	RestResponse<List<PersonalDTO>> getRecommendFriends(Long userInfoId, String keyword);

	Friendships confirmIsFriend(Long myId, Long userInfo);

	RestResponse<TransferMessageDTO> transferMessage(Long friendId);
}

